package org.springblade.modules.repair.mapper;

import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;import org.apache.ibatis.annotations.Param;import org.springblade.modules.repair.entity.MaintainMalfunctionWork;
import org.springblade.modules.repair.entity.MaintainPlanContent;
import org.springblade.modules.repair.vo.*;
import org.springblade.modules.repair.vo.plan.PlanPartStatusVo;
import org.springblade.modules.repair.vo.plan.wx.WxUserPlanVo;

import java.util.Date;
import java.util.List;

public interface MaintainMalfunctionWorkMapper extends BaseMapper<MaintainMalfunctionWork> {
    /**
     * 自定义分页
     *
     * @param page
     * @param maintainMalfunctionWork
     * @return
     */
    List<MaintainMalfunctionWorkVO> selectMaintainMalfunctionWorkPage(IPage page, MaintainMalfunctionWorkVO maintainMalfunctionWork);

    /**
     * 查询工单明细
     *
     * @param planId 计划id
     * @param userId 用户id
     * @return 数据集
     */
    MaintainMalfunctionWork detailByPlanId(@Param("planId") Long planId, @Param("userId") Long userId);

    MalFunctionDetailVO selectMalfunctionDetail(@Param("planId") Long planId);

	FaultFeedbackVO selectMalfunctionApprove(@Param("planId") Long planId);

	MalFunctionApproveDetailVO selectMalfunctionApproveDetail(@Param("planId") Long planId);

    List<MalfunctionPartsTreeVO> selectMalPartsTree(@Param("keyWord") String keyWord);

	/**
	 * 根据工单id获取配件任务(未完成的)
	 * @param planId 工单id
	 * @return 数据集
	 */
	PlanPartStatusVo getPartListCounts(Long planId);

	/**
	 * 根据工单id 查询预计完成时间
	 * @param id 工单id
	 * @return 预计完成时间
 	 */
	Date getPreTime(Long id);

	/**
	 * 根据工单id 获取 FaultFeedbackVO 对象
	 * @param id 工单id
	 * @return FaultFeedbackVO 对象
	 */
    FaultFeedbackVO getFeedbackMessage(Long id);

	/**
	 * 根据工单id 获取 申请状态
	 * @param id 工单id
	 * @return 工单状态
	 */
	Integer getApproveStatus(Long id);

	List<MaintainPlanContent> getPartList(Long planId);

	List<MaintainMalfunctionWork> listByPlanId(Long planId);


	/**
	 * 获取用户的维修工单列表
	 * @param beginTime 开始时间
	 * @param endTime 结束时间
	 * @param userId
	 * @return 数据集
	 */
	List<WxUserPlanVo> userPlanListOfToday(@Param("beginTime") DateTime beginTime, @Param("endTime") DateTime endTime, @Param("userId") Long userId);
}
